home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / test / fptest.c < prev    next >
C/C++ Source or Header  |  1992-11-23  |  3KB  |  95 lines

  1.  
  2. #include <math.h>
  3.  
  4. main(ac, av)
  5. char *av[];
  6. {
  7.     double xx = (ac == 1) ? 1234.5678 : atof(av[1]);
  8.  
  9.     fpconst(xx);
  10.     return(0);
  11. }
  12.  
  13. fpconst(xx)
  14. double xx;
  15. {
  16.     float f1 = 1.2345678901234567890123456 + 8.7654321098765432109876544;
  17.     float f2 = 23.54;
  18.     float f3 = 23.54 + 10.23;
  19.     double d1 = 1.2345678901234567890123456789 + 8.7654321098765432109876543211;
  20.     double d2 = 23.54;
  21.     double d3 = 23.54 + 10.23;
  22.     short i;
  23.  
  24.     puts("TESTING FLOATING CONSTANTS");
  25.  
  26.     printf("%4.8f\t(float const) ~= 10\n", f1);
  27.     printf("%4.8f\t(float const) ~= 23.54\n", f2);
  28.     printf("%4.8f\t(float const) ~= 33.77\n", f3);
  29.     printf("%4.8lf\t(double const) ~= 10\n", d1);
  30.     printf("%4.8lf\t(double const) ~= 23.54\n", d2);
  31.     printf("%4.8lf\t(double const) ~= 33.77\n", d3);
  32.  
  33.     puts("TESTING (FLOAT)");
  34.  
  35.     f1 = 1.25;
  36.     f2 = 3.75;
  37.     f3 = 0.25;
  38.  
  39.     printf("1.25 + 3.75 = 5.00      (%4.8f)\n", f1 + f2);
  40.     printf("1.25 - 3.75 =-2.50      (%4.8f)\n", f1 - f2);
  41.     printf("1.25 * 3.75 = 4.6875    (%4.8f)\n", f1 * f2);
  42.     printf("1.25 / 3.75 = 0.3333    (%4.8f)\n", f1 / f2);
  43.     printf("-1.25       = -1.25     (%4.8f)\n", -f1);
  44.     printf("abs(-1.25)  = 1.25      (%4.8f)\n", ffabs(-f1));
  45.     printf("acos(0.25)  = 1.3181    (%4.8f)\n", facos(f3));
  46.     printf("asin(0.25)  = 0.2527    (%4.8f)\n", fasin(f3));
  47.     printf("atan(0.25)  = 0.2450    (%4.8f)\n", fatan(f3));
  48.     printf("cos(0.25)   = 0.968     (%4.8f)\n", fcos(f3));
  49.     printf("sin(1.25)   = 0.949     (%4.8f)\n", fsin(f1));
  50.     printf("tan(1.25)   = 3.0096    (%4.8f)\n", ftan(f1));
  51.     printf("exp(0.25)   = 1.2840    (%4.8f)\n", fexp(f3));
  52.     printf("ln(3.75)    = 1.3218    (%4.8f)\n", flog(f2));
  53.     printf("log10(3.75) = 0.5740    (%4.8f)\n", flog10(f2));
  54.     printf("1.25^3.75   = 2.3089    (%4.8f)\n", fpow(f1, f2));
  55.     printf("sqrt(3.75)  = 1.9365    (%4.8f)\n", fsqrt(f2));
  56.  
  57.     puts("TESTING (DOUBLE)");
  58.  
  59.     d1 = 1.25;
  60.     d2 = 3.75;
  61.     d3 = 0.25;
  62.  
  63.     printf("1.25 + 3.75 = 5.00      (%4.8f)\n", d1 + d2);
  64.     printf("1.25 - 3.75 =-2.50      (%4.8f)\n", d1 - d2);
  65.     printf("1.25 * 3.75 = 4.6875    (%4.8f)\n", d1 * d2);
  66.     printf("1.25 / 3.75 = 0.3333    (%4.8f)\n", d1 / d2);
  67.     printf("-1.25       = -1.25     (%4.8f)\n", -d1);
  68.     printf("abs(-1.25)  = 1.25      (%4.8f)\n", abs(-d1));
  69.     printf("acos(0.25)  = 1.3181    (%4.8f)\n", acos(d3));
  70.     printf("asin(0.25)  = 0.2527    (%4.8f)\n", asin(d3));
  71.     printf("atan(0.25)  = 0.2450    (%4.8f)\n", atan(d3));
  72.     printf("cos(0.25)   = 0.968     (%4.8f)\n", cos(d3));
  73.     printf("sin(1.25)   = 0.949     (%4.8f)\n", sin(d1));
  74.     printf("tan(1.25)   = 3.0096    (%4.8f)\n", tan(d1));
  75.     printf("exp(0.25)   = 1.2840    (%4.8f)\n", exp(d3));
  76.     printf("ln(3.75)    = 1.3218    (%4.8f)\n", log(d2));
  77.     printf("log10(3.75) = 0.5740    (%4.8f)\n", log10(d2));
  78.     printf("1.25^3.75   = 2.3089    (%4.8f)\n", pow(d1, d2));
  79.     printf("sqrt(3.75)  = 1.9365    (%4.8f)\n", sqrt(d2));
  80.  
  81.     d1 = xx;
  82.     d3 = 1.0E99;
  83.     printf("CONVERSION TEST ON %4.8lf\n", d1);
  84.     for (i = 0; i < 100; ++i) {
  85.     f1 = d1;
  86.     d1 = f1;
  87.     d2 = xx - d1;
  88.     if (d2 == d3)
  89.         break;
  90.     printf("%4d %1.16le\n", i, d2);
  91.     d3 = d2;
  92.     }
  93. }
  94.  
  95.